package com.lin.execute;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileUtil {

    // 从文件读取 BufferedImage
    public static BufferedImage loadImage(String filePath) {
        File file = new File(filePath);
        try {
            return ImageIO.read(file);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    // 获取指定包下面所有文件的真实路径
    public static List<String> getFilePathsFromPackage(String packageName) {
        List<String> filePaths = new ArrayList<>();
        File folder = new File(packageName); // 使用本地文件路径

        if (folder.exists() && folder.isDirectory()) {
            getFilesInDirectory(folder, filePaths); // 获取文件夹中的所有文件
        }

        return filePaths;
    }

    private static void getFilesInDirectory(File directory, List<String> filePaths) {
        File[] files = directory.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    // 如果是目录递归调用
                    getFilesInDirectory(file, filePaths);
                } else {
                    // 如果是文件，加入路径列表
                    filePaths.add(file.getAbsolutePath());
                }
            }
        }
    }

    // 获取文件名（带后缀）
    public static String getFileNameWithExtension(String filePath) {
        File file = new File(filePath);
        return file.getName();
    }

    // 获取文件名（不带后缀）
    public static String getFileNameWithoutExtension(String filePath) {
        File file = new File(filePath);
        String fileName = file.getName();
        int dotIndex = fileName.lastIndexOf('.');
        if (dotIndex != -1) {
            return fileName.substring(0, dotIndex);
        } else {
            return fileName; // 如果没有后缀直接返回文件名
        }
    }

    // 获取文件的整个内容（返回字符串）
    public static String getFileContent(String filePath) throws IOException {
        File file = new File(filePath);
        StringBuilder content = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line).append(System.lineSeparator());
            }
        }
        return content.toString().trim();  // 返回文件内容，去除末尾多余的换行符
    }
}

